NowCode:HJ11 数字颠倒

题目:数字颠倒

描述

输入一个整数,将这个整数以字符串的形式逆序输出

程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001

输入描述:

输入一个int整数

输出描述:

将这个整数以字符串的形式逆序输出

示例1

1
2
3
4
5
输入:
1516000

输出:
0006151

示例2

1
2
3
4
5
输入:
0

输出:
0

题解1:原地反转

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
// #include <algorithm>
using namespace std;

int main() {
int input = 0;
cin >> input;
string str = to_string(input);
// reverse(str.begin(), str.end());
auto first = str.begin();
auto last = str.end();
while (first != last && first != --last) {
std::iter_swap(first, last);
first++;
}
cout << str;
}

题解2:从后向前构造新的字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;

int main() {
int input = 0;
cin >> input;
string str = to_string(input);
string ret;
for (int i = str.size() - 1; i >= 0; i--) {
ret += str[i];
}
cout << ret;
}

思路

原地反转和从后向前构造新的字符串

此题挺好